/**
 *  错误处理能力 
 */
#pragma once

#include "SwTask.h"

#define SW_ERROR       -1   //任务出错

//异步等待任务，检查子任务状态（返回值）
#define SW_WAIT_TASK_WITH_RESULT(s, task, result)\
    do{                             \
        SW_SET(s);                  \
        result = task;              \
        if(result == SW_WAITING){   \
            return SW_WAITING;      \
        }                           \
    }while(0)

//从异常返回/ 抛出异常
#define SW_RAISE_ERROR(s)   SW_INIT(s); return SW_ERROR;
//检测是否异常，并直接返回
#define SW_ERROR_CHECK(s, result)  if(result == SW_ERROR)  SW_RAISE_ERROR(s)